#!/bin/bash

# Intentionally very concise summary of IIAB details.
# Can evolve for int'l community needs, alongside the much longer:
# https://github.com/iiab/iiab/blob/master/scripts/iiab-diagnostics.README.md

git config --global --add safe.directory /opt/iiab/iiab    # Nec below, if non-root
cd /opt/iiab/iiab
SHORT_HASH1=$(git log --pretty=format:'%h' -n 1)    # --pretty=format:'%H' (all 40 chars)
TAG1=$(git describe --tags --abbrev=0)
COMMITS1=$(git log "$TAG1..HEAD" --oneline | wc -l)
PR_COUNT1=$(git log "$TAG1..HEAD" --oneline --grep='Merge pull request' | wc -l)
COMMIT_MSG1=$(git log --format=%B -1 | head -1)
BRANCH1=$(git branch --show-current)
REMOTE_URL1="none"
tmp=$(git config branch.$BRANCH1.remote) && {
    if [[ $tmp =~ ^"https://" ]]; then
        REMOTE_URL1=$tmp
    else
        REMOTE_URL1=$(git config remote.$tmp.url)
    fi
}

if [ -d /opt/iiab/iiab-admin-console ]; then
    git config --global --add safe.directory /opt/iiab/iiab-admin-console    # Nec below, if non-root
    cd /opt/iiab/iiab-admin-console
    SHORT_HASH2=$(git log --pretty=format:'%h' -n 1)    # --pretty=format:'%H' (all 40 chars)
    TAG2=$(git describe --tags --abbrev=0)
    COMMITS2=$(git log "$TAG2..HEAD" --oneline | wc -l)
    PR_COUNT2=$(git log "$TAG2..HEAD" --oneline --grep='Merge pull request' | wc -l)
    COMMIT_MSG2=$(git log --format=%B -1 | head -1)
    BRANCH2=$(git branch --show-current)
    REMOTE_URL2="none"
    tmp=$(git config branch.$BRANCH2.remote) && {
        if [[ $tmp =~ ^"https://" ]]; then
            REMOTE_URL2=$tmp
        else
            REMOTE_URL2=$(git config remote.$tmp.url)
        fi
    }
fi

echo "$(grep install_date /etc/iiab/iiab.ini)   Current TZ: $(date +%Z)"
echo
echo -e "iiab: $SHORT_HASH1, $PR_COUNT1 PR's / $COMMITS1 commits since tag $TAG1"
echo -e "    \"$COMMIT_MSG1\""
echo "    $REMOTE_URL1   branch: $BRANCH1"
if [ -f /etc/iiab/pr-list-pulled ]; then
    echo
    echo "/etc/iiab/pr-list-pulled:"
    cat /etc/iiab/pr-list-pulled
fi
echo
if [ -d /opt/iiab/iiab-admin-console ]; then
    echo -e "iiab-admin-console: $SHORT_HASH2, $PR_COUNT2 PR's / $COMMITS2 commits since tag $TAG2"
    echo -e "    \"$COMMIT_MSG2\""
    echo "    $REMOTE_URL2   branch: $BRANCH2"
else
    echo "    WARNING: Directory /opt/iiab/iiab-admin-console does not exist!"
fi
echo
if [ -f /etc/rpi-issue ]; then
    cat /etc/rpi-issue
    echo "/etc/debian-version: $(cat /etc/debian_version)"
else
    echo "$(cat /etc/issue.net)   $(cat /etc/debian_version)"
fi
echo "display-manager? $(systemctl is-active display-manager.service)   Arch1: $(dpkg --print-architecture)   Arch2: $(dpkg --print-foreign-architectures)"
uname -nrvm
echo "$(lscpu | grep '^Model name:' | sed 's/^Model name:\s*//')   $(lscpu | grep '^CPU(s):' | tr -s ' ')   "$(free -m | tail -2 | tr -s ' ' | cut -d' ' -f1-2)
if [ -f /proc/device-tree/model ]; then
    cat /proc/device-tree/model | tr -d '\000' ; echo    # dpaste.com pastebin doesn't allow null chars!  MORE RPi DETAIL: tail -4 /proc/cpuinfo
fi
if [ -f /sys/class/thermal/thermal_zone0/temp ]; then
    echo "Temperature(s): "$(cat /sys/class/thermal/thermal_zone*/temp)    # Prettier if avail: vcgencmd measure_temp
fi
#if command -v landscape-sysinfo > /dev/null; then    # Slow, Ubuntu Server only
#    landscape-sysinfo --sysinfo-plugins=Disk,Temperature,Load    # Like: uptime -p
#fi
echo
/opt/iiab/iiab/scripts/iiab-apps-to-be-installed > /dev/null
echo "$(df -h /)      ZIMs: $(ls /library/zims/content/ | wc -l) OER2Go: $(ls /library/www/html/modules/ | wc -l) Apps2B: $(cat /tmp/iiab-apps-to-be-installed | wc -l)"
echo
#grep "^openvpn_handle:" /etc/iiab/local_vars.yml
#grep "^tailscale_installed:" /etc/iiab/iiab_state.yml
#if [[ $(command -v /usr/bin/tailscale) ]]; then
if tailscale ip &> /dev/null; then
    #echo "VPN: $(tailscale ip) $(tailscale whois --json $(tailscale ip -1) | jq -r .Node.Tags[])"
    echo "VPN: $(tailscale ip) $(tailscale status --json | jq -r .Self.Tags[])"
fi
echo $(ip -o link show | awk -F': ' '{print $2}')    # Better order than: ls -rt /sys/class/net
echo $(echo $(hostname -A) $(hostname -a) | xargs -n1 | sort | uniq)
hostname -I
echo
